package main

import "github.com/gin-gonic/gin"

// 自定义一个中间件
func myHandler() gin.HandlerFunc {
	return func(context *gin.Context) {
		//通过自定义的中间件 设置的值 在后续处理只要调用这个中间件都可以拿到这里的参数
		context.Set("usersession", "userid-1")
		context.Next() //放行
		//context.Abort()//阻止运行
	}
}

func main() {
	//创建服务
	ginServer := gin.Default()
	//访问地址，处理请求 request response
	ginServer.GET("/hello", func(context *gin.Context) {
		context.JSON(200, gin.H{"msg": "hello world"})
	})
	//问号传参 url?uid=xxxx&name=xxx
	ginServer.GET("/user/info", func(context *gin.Context) {
		uid := context.Query("uid")
		name := context.Query("name")
		context.JSON(200, gin.H{"uid": uid, "name": name})
	})
	//restful格式传参 url/user/uid
	ginServer.GET("/user/info/:uid/name/:name", myHandler(), func(context *gin.Context) {
		//取出中间件中的值
		usersession := context.MustGet("usersession")
		uid := context.Param("uid")
		name := context.Param("name")
		context.JSON(200, gin.H{"uid": uid, "name": name, "usersession": usersession})
	})

	//路由组
	useerGropu := ginServer.Group("/user")
	{
		useerGropu.GET("add")
	}

	//中间件

	//服务器端口
	ginServer.Run(":8083")
}
